﻿Imports System.Data.SqlClient
Imports System.Data
Imports Microsoft.SqlServer.Server.SqlMetaData
Imports System.Speech.Synthesis
Imports System.IO

'Imports CLASE.frmConfirmacion
Imports CLASE.Datos
Public Class frmTikect

    Dim botones As New Hashtable()
    Dim c As Integer
    Dim i As Integer
    'Dim ges As String = "Gestión "
    Dim voz As New SpeechSynthesizer
    Dim sec As Integer

    Public Sub actualizar()

        If connet.State = ConnectionState.Open Then
            connet.Close()
        End If

        connet.Open()
            Dim nombre As String = "sp_cantidad"
            ''declaramos una variable para establecer que lo que se ejecutara es un  SP
            Dim command As New SqlCommand(nombre, connet)
            command.CommandType = CommandType.StoredProcedure
            '' La variable escalar i almacena el valor que genera el SP y se ejecuta por medio de la insteruccion command.ExecueScalar
            i = command.ExecuteScalar

        
        For c = 1 To i Step 1
            ' este ciclo imprime la cantida gestiones asignadas representandolas en un boton
            'botones es un arreglo ges= a la palabra Gestiones  y se concatena con la posicion
            botones(c) = c
        Next
        'por medio de ésta consulta se le pueden asigna el idgestion,codgestion y nombre de la gestion a las propiedades, tabindex,name,text

        Dim consulta As String = "Select g.CodGestion,g.NombreGestion  from  GestionCaja gc inner join Gestion g  on  gc.CodGestion=g.codgestion  group by g.NombreGestion,g.CodGestion"

        Dim comando As New SqlCommand(consulta, connet)
        Dim lector As SqlDataReader = comando.ExecuteReader
        If lector.HasRows Then
            ' este ciclo imprime los botones y sus propiedades correspondientes
            While lector.Read

                Dim btn As New Button
                btn.BackColor = System.Drawing.Color.DarkCyan
                btn.Font = New Font("Microsoft Sans Serif", 21.0!)
                btn.Name = lector.GetValue(0).ToString
                btn.Size = New Size(213, 91)
                btn.Text = lector.GetValue(1).ToString


                'agregar el botton al flowlayout
                flpContenedor.Controls.Add(btn)
                'el boton se agrega al evento click

                AddHandler btn.Click, AddressOf eventosClick


            End While


        End If


        connet.Close()

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try

            REM se comprueba la coneccion por medio de esta línea de código
            If connet.State = ConnectionState.Open Then

                connet.Close()

            End If
            connet.Open()
            actualizar()
            ' el procedimiento almacenado cantidad retorna un valor escalar que permite la incrementacion o disminucion de la cantidad de botones
            'que apareceran en la pantalla



            'Hashtable es la clase para auto agregar botones
            connet.Close()

        Catch ex As Exception
            'en caso de erro, mostrara un msj al usuario en lugar de que el sistema reviente
            MsgBox(ex.Message)

        End Try

    End Sub

    Protected Sub eventosClick(sender As Object, e As EventArgs)

        Try


            If MsgBox("¿Está seguro de su elección?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "CONFIRMAR") = MsgBoxResult.Yes Then

                Dim boton As Button = TryCast(sender, Button)
                union.sp_Secuencia(boton.Name, sec)
                Dim t As New GestionEnCola With
                    {.CodGestion = boton.Name,
                     .FechaPeticion = Date.Now,
                     .Secuencia = sec,
                     .IdEstado = 1
                    }

                union.GestionEnCola.InsertOnSubmit(t)
                union.SubmitChanges()

                ticket = String.Format("Ticket  {0}   {1}   {2} ", boton.Name, t.FechaPeticion, sec)
                'ticket = "Ticket creado!: " & t.IdGestionEnCola
                MsgBox(ticket, MsgBoxStyle.Information)
                Datos.CargarTicket()
                Datos.Show()
            End If

        Catch ex As Exception
            MsgBox(ex.Message)

        End Try

    End Sub


  

    Private Sub btnActualizar_Click(sender As Object, e As EventArgs) Handles btnActualizar.Click
        Me.flpContenedor.Controls.Clear()
        actualizar()
    End Sub

    Private Sub btnCerrar_Click(sender As Object, e As EventArgs) Handles btnCerrar.Click
        End

    End Sub


    
    


    Private Sub btnMaximizar_Click(sender As Object, e As EventArgs) Handles btnMaximizar.Click
        Me.WindowState = FormWindowState.Normal

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.WindowState = FormWindowState.Maximized
    End Sub
End Class
